perm filename EXTEND.SAI[11,ALS] blob sn#062420 filedate 1973-09-19 generic text, type T, neo UTF8
00010	BEGIN "EXTEND"
00020	DEFINE ⊂="COMMENT";  ⊂ 9/2/73 EXTENDS INPUT  DATA;
00030	DEFINE CR="'15",LF="'12",CRLF="CR&LF",TB="'11";
00040	DEFINE ARRSIZ="128",FRIMAX="ARRSIZ*6",PITMAX="ARRSIZ";
00050	
00060	INTEGER ARRAY INDATA[0:255];
00070	INTEGER ARRAY LFILE[0:'177];
00080	INTEGER ARRAY FRIDAT,PITDAT[0:ARRSIZ-1];
00090	INTEGER FRICNT,PITCNT,POINTF,POINTP,PITLOC,PITVAL;
00100	INTEGER ARRAY SUMS[0:23,0:63];
00110	INTEGER I,J,K,L,M,N,P,SEGC,SEGTOT,BRK,EOF,EOFA,BPT,RL,EOF4,EOF5,EOF6;
00120	INTEGER CHAN1,CHAN2, CHAN3,CHAN4,CHAN5,CHAN6;
00130	STRING READ1,READ2,READ3,FILEI,FILEL,FILLST;
00140	BOOLEAN ER;
00150	
00160	INTEGER PROCEDURE FRICAT;
00170	BEGIN
00180	INTEGER I,J;
00190	IF FRICNT≥FRIMAX THEN BEGIN
00200	  FOR I←0 STEP 1 UNTIL ARRSIZ-1 DO FRIDAT[I]←0;
00210	  IF EOF5=0 THEN ARRYIN(CHAN5,FRIDAT[0],ARRSIZ);
00220	  POINTF←POINT(6,FRIDAT[0],-1);
00230	  FRICNT←0; END;
00240	FRICNT←FRICNT+1;
00250	J←ILDB(POINTF);
00260	RETURN(J);
00270	END;
00280	
00290	INTEGER PROCEDURE PITCH;
00300	BEGIN
00310	INTEGER I,J;
00340	  IF PITCNT≥PITMAX THEN BEGIN
00350	    FOR I←0 STEP 1 UNTIL ARRSIZ-1 DO PITDAT[I]←0;
00360	    IF EOF6=0 THEN ARRYIN(CHAN6,PITDAT[0],ARRSIZ);
00370	    POINTP←POINT(6,PITDAT[0],-1);
00380	    PITCNT←0; END;
00400	  PITCNT←PITCNT+1;
00410	  PITVAL←ILDB(POINTP);
00420	IF PITLOC≤(SEGC+2)*128 THEN RETURN(PITVAL) ELSE RETURN(EOF6);
00430	END;
00440	
     

00010	STDBRK(1);
00020	SETBREAK(14,"∃",NULL,"INS");
00030	SETBREAK(16,'56,NULL,"INA");
00040	
00050	OUTSTR("This program extends the input data from the specified file "
00060	&CRLF&"and creates a new file with extension of T0X."&CRLF);
00070	OUTSTR("It uses data as to frication and glottal energy obtained from"
00080	  &CRLF&" files with the same name but with extensions .FRI AND .PIT."&CRLF);
00090	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
00100	
00110	OPEN(CHAN1,"DSK",'10,10,0,0,0,EOF);
00120	LOOKUP(CHAN1,"NORMAL.DAT",0);
00130	ARRYIN(CHAN1,SUMS[0,0],1536);
00140	CLOSE(CHAN1);
00150	
00160	OUTSTR(CRLF&"Data file list (LIST28) = "); FILEL←INCHWL;
00170	IF FILEL="" THEN FILEL←"LIST28";
00180	CLOSE(CHAN2); OPEN(CHAN2,"DSK",1,2,0,3500,BRK,EOFA);
00190	LOOKUP(CHAN2,FILEL,ER);
00200	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&" File = ");
00210	LOOKUP(CHAN2,FILEL←INCHWL,ER); END;  EOFA←0;
00220	FILLST←INPUT(CHAN2,14); EOFA←0; RL←0; CLOSE(CHAN2);
00230	WHILE EOFA=0 DO BEGIN "LISTREAD"
00240	FILEI←SCAN(FILLST,1,J); IF FILEI="" THEN DONE;
00250	
00260	CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF4);
00270	LOOKUP(CHAN4,FILEI,ER);
00290	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
00300	SEGTOT←(LFILE[0]*6)%256;  SEGC←0;
00310	OUTSTR(FILEI&" "&CVS(SEGTOT)&" seg. ");
00320	
00330	READ1←SCAN(FILEI,16,J)&"T0X";
00340	CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,0,10,0,0,EOF);
00350	ENTER(CHAN3,READ1,BRK); ARRYOUT(CHAN3,LFILE[0],'200);
00360	
00370	READ3←READ1;
00380	READ2←SCAN(READ3,16,J)&"FRI";
00390	OUTSTR(READ2&CRLF);
00400	CLOSE(CHAN5); OPEN(CHAN5,"DSK",'10,10,0,0,0,EOF5);
00410	LOOKUP(CHAN5,READ2,BRK);
00420	
00430	READ3←READ2;
00440	READ3←SCAN(READ3,16,J)&"PIX";
00450	CLOSE(CHAN6); OPEN(CHAN6,"DSK",'10,10,0,0,0,EOF6);
00460	LOOKUP(CHAN6,READ3,BRK);
00470	FRICNT←PITCNT←99999; PITLOC←PITVAL←0;
00480	
00490	WHILE TRUE DO BEGIN
00500	  IF EOF4≠0 THEN DONE;
00510	  FOR I←0 STEP 1 UNTIL 255 DO INDATA[I]←0;
00520	  ARRYIN(CHAN4,INDATA[0],256);
00530	  BPT←POINT(6,INDATA[0],-1);
00540	  FOR I←0 STEP 1 UNTIL 63 DO BEGIN
00550	    SEGC←SEGC+1; IF SEGC>SEGTOT THEN DONE;
00560	    FOR P←0 STEP 1 UNTIL 15 DO IBP(BPT);
00570	    K←ILDB(BPT); L←ILDB(BPT); M←ILDB(BPT);
00580	    K←(K LSH 6)%(L+56); M←(M LSH 6)%(L+16);
00590	    IF K>63 THEN K←63; IF M>63 THEN M←63;
00600	    IDPB(K,BPT); IDPB(M,BPT);
00610	    J←FRICAT; ⊂ OUTSTR("Fricat= "&CVOS(J)&TB);
00620	    IDPB(J,BPT); IDPB(PITCH,BPT); IBP(BPT);
00630	    END;
00640	  ARRYOUT(CHAN3,INDATA[0],256);
00650	  IF SEGC>SEGTOT THEN DONE;
00660	  END;
00670	
00680	CLOSE(CHAN3); OUTSTR(" Created file "&READ1&CRLF); 
00690	
00700	IF EOFA≠0 THEN DONE;
00710	END "LISTREAD";
00720	
00730	
00740	RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN4);
00750	
00760	END "EXTEND";